package com.leinao.job.dao;

import com.leinao.job.dto.PaiJobEnvironment;
import com.leinao.job.dto.PaiProjectJobDto;
import com.leinao.job.dto.ProjectJobViewDto;
import com.leinao.job.model.PaiProjectJob;
import com.leinao.project.dto.ProjectPublicJobDto;
import com.leinao.project.model.ProjectPublicJob;
import com.leinao.project.model.ProjectPublicJobHistory;
import org.apache.ibatis.annotations.Param;
import com.leinao.login.dto.LoginResultDto;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface PaiProjectJobMapper {

	/**
	 * @description 保存任务并且获取id
	 * @param job
	 * @author cuidongdong
	 * @date 2019.5.9 14:18:00
	 */
	int createProjectJobRel(PaiProjectJob pb);

    /***
     * @Description 获取任务视图
     * @param userId : 用户ID
     * @author lizi
     * @date 2018/11/29 下午4:45
     */
    List<ProjectJobViewDto> getTaskViewList(String userId);
    /***
     * @Description 获取任务视图
     * @param userId : 用户ID
     * @author lizi
     * @date 2018/11/29 下午4:45
     */
    List<ProjectJobViewDto> getTaskViewListForTag(@Param("userId") String userId,@Param("jobTag") String jobTag);

    /**
     * @description 根据id查询debug任务
     * @param projectId
     * @return
     * @author cuidongdong
	 * @date 2019.5.9 14:21:00
     */
	List<String> getDebugJob(Integer projectId);

	/**
	 * 更新任务信息（目前是更新任务备注）
	 * @param job 任务信息
	 * @return 影响行数
	 */
	Integer updateJobInfo(PaiProjectJob job);

	/**
	 * 功能描述：查询任务信息
	 * @param projectId 任务
	 * @param jobName 任务名称
	 * @param userId 用户id
	 * @return com.leinao.job.model.PaiProjectJob 任务信息
	 * @Author: guoliangbo
	 * @Date: 2019/5/17 17:29
	 */
	PaiProjectJob selectProjectJob(@Param("projectId") Integer projectId, @Param("jobName") String jobName, @Param("userId") String userId);

    /**
     * @description 根据id统计debug任务的count值
     * @param projectId 项目ID
     * @param type 时间间隔类型
     * @return
     * @author cuidongdong
     * @date 2019.5.9 14:21:00
     */
	Integer queryProjectDebugJobFrequency(@Param("projectId") Long projectId, @Param("type") Integer type);

	/**
	 * 功能描述：根据项目任务id查询任务信息
	 *
	 * @param projectJobId 项目任务id
	 * @Author: lizi
	 * @Date: 2019/5/16 13:52
	 */
	PaiProjectJobDto getProjectJobInfoByJobId(@Param("projectJobId") Long projectJobId);

	/**
	 * 功能描述：根据项目任务id列表查询任务信息
	 *
	 * @param projectJobIdList 项目任务id列表
	 * @Author: lizi
	 * @Date: 2019/5/16 13:52
	 */
	List<PaiProjectJobDto> getProjectJobInfoListByJobIdList(@Param("projectId") Long projectId, @Param("projectJobIdList") List<Long> projectJobIdList);

	/**
	  * @Description 	复制任务
	  * @param publicJobs	任务实体类
	  * @return
	  * @author:    weiwei
	  * @Date:  2019/5/24 15:27
	  */
	Integer copyJobs(List<PaiProjectJob> publicJobs);

	/**
	  * 功能描述：逻辑删除删除之前公开的任务信息
	  * @param id 公开项目id
	  * @return java.lang.Integer 影响行数
	  * @Author: guoliangbo
	  * @Date: 2019/5/27 13:26
	  */
	Integer deleteProjectJobs(Long id);

	/**
	  * 功能描述：插入公开任务信息
	  * @param publicJob 公开任务信息
	  * @return java.lang.Integer 影响行数
	  * @Author: guoliangbo
	  * @Date: 2019/5/27 17:37
	  */
	Integer insertPublicJob(ProjectPublicJob publicJob);

	/**
	  * 功能描述：插入公开任务历史信息
	  * @param projectPublicJobHistory 公开任务历史信息
	  * @return java.lang.Integer 影响行数
	  * @Author: guoliangbo
	  * @Date: 2019/5/27 17:38
	  */
	Integer insertPublicJobHistory(ProjectPublicJobHistory projectPublicJobHistory);

	/**
	  * 功能描述：更新任务表中字段
	  * @param projectJob 任务信息
	  * @return java.lang.Integer
	  * @Author: guoliangbo
	  * @Date: 2019/5/27 21:42
	  */
	Integer updateProjectJobInfo(PaiProjectJobDto projectJob);

	/**
	  * @Description 	获取任务语言框架
	  * @param publicJobId
	  * @return
	  * @author:    weiwei
	  * @Date:  2019/6/6 13:55
	  */
	PaiJobEnvironment getPublicJobEnvironment(Long publicJobId);

	/**
	 *
	 * @Description: 更新自定义镜像使用次数
	 * @param imagePatch : 镜像地址
	 * @return: java.lang.Integer
	 * @Author: 曹阳
	 * @date: 2019/6/17 17:22
	 *
	 **/
	Integer updateImageUseCount(@Param("imagePatch") String imagePatch);
}